본문으로 건너뛰기

PCB에 대해서 설명해주세요.

PCB

Process Control Block(PCB)란 특정한 프로세스에서 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조이다. PCB는 운영체제가 프로세스를 표현한 것이라고 할 수 있다.

운영체제가 프로세스 스케줄링을 하기 위해서 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 PCB라고 한다.

운영체제에서 프로세스는 PCB로 나타내어지며, PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료이다. 프로그램이 프로세스가 된다는 것은 운영체제로부터 PCB를 얻는다는 뜻이고, 프로세스가 종료된다는 것은 해당 PCB가 폐기된다는 뜻이다.

배경

모든 프로세스는 실행을 위해 CPU를 필요로 하지만 CPU 자원은 한정되어 있다. 그렇기에 프로세스들은 차례대로 돌아가며 한정된 자원만큼만 CPU를 이용한다. 자신의 차례가 되면 정해진 시간만큼 CPU를 이용하고, 시간이 끝났음을 알리는 인터럽트(타이머 인터럽트)가 발생하면 자신의 차례를 양보하고 다음 차례가 올 때까지 기다린다.

운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분한다. 이를 위해 운영체제는 프로세스 제어 블록(Process Control Block)을 이용한다.

PCB는 프로세스 생성시에 만들어지고 실행이 끝나면 폐기된다. 다시 말해 새로운 프로세스가 생성되었다는 말은 운영체제에게 PCB를 생성했다는 말과 같고 프로세스가 종료되었다는 말은 운영체제가 해당 PCB를 폐기했다는 말과 같다.

타이머 인터럽트는 클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 하드웨어 인터럽트이다.

PCB에 저장되는 정보

  • 프로세스 ID: 특정 프로세스를 식별하기 위해 부여하는 고유 번호
  • 프로세스 상태: new, ready, running, waiting, terminated등의 상태를 저장
  • 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 주소
  • 레지스터 값: 프로세스는 자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원한다. 그래야만 이전까지 진행했던 작업들을 그대로 이어서 실행할 수 있다. 그래서 PCB안에는 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담긴다.
  • CPU 스케줄링 정보: 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보도 PCB에 기록된다.
  • 메모리 관리 정보: 프로세스마다 메모리에 저장된 위치가 다르다. 그래서 PCB에는 프로세스가 어느 주소에 저장되어 있는지에 대한 정보가 있어야 한다. PCB에는 베이스 레지스터, 한계 레지스터 값과 같은 정보들이 담긴다. 또한 프로세스의 주소를 알기 위한 또 다른 중요 정보 중 하나인 페이지 테이블 정보도 PCB에 담긴다. 또한 프로세스의 주소를 알기 위한 또 다른 중요한 정보 중 하나인 페이지 테이블 정보도 PCB에 담긴다.
  • 사용한 파일과 입출력장치 목록: 프로세스가 실행 과정에서 특정 입출력장치나 파일을 사용하면 PCB에 해당 내용이 명시된다. 즉, 어떤 입출력 장치가 이 프로세스에 할당되었는지, 어떤 파일을 열었는지에 대한 정보들이 PCB에 기록된다.
  • 어카운팅 정보: 사용된 CPU 시간, 시간제한, 계정번호등

Reference

  • 쉽게 배우는 운영체제
  • 혼자 공부하는 운영체제
  • PCB란?